module(..., package.seeall)
local floor,mod=math.floor,math.mod
function to_b6_4b(num)
	if num < 0 then num=-num end
	num=floor(num)
	local b1,b2,b3,b4,b5,b6,_4b=0,0,0,0,0,0,0
	if num >= 1 then
		b1=mod(num,256)
		if num >= 256 then
			num=floor(num/256)		
			b2=mod(num,256)
			if num >= 256 then
				num=floor(num/256)			
				b3=mod(num,256)
				if num >= 256 then
					num=floor(num/256)
					b4=mod(num,256)
					if num >= 256 then
						num=floor(num/256)
						b5=mod(num,256)
						if num >= 256 then
							num=floor(num/256)
							b6=mod(num,256)
							if num >= 256 then
								num=floor(num/256)
								_4b=mod(num,16)
							end
						end
					end
				end
			end
		end
	end
	return b1,b2,b3,b4,b5,b6,_4b
end
function to_w3_4b(num)
	if num < 0 then num=-num end
	num=floor(num)
	local w1,w2,w3,_4b=0,0,0,0
	if num >= 1 then
		w1=mod(num,65536)
		if num >= 65536 then
			num=floor(num/65536)		
			w2=mod(num,65536)
			if num >= 65536 then
				num=floor(num/65536)			
				w3=mod(num,65536)
				if num >= 65536 then
					num=floor(num/65536)
					_4b=mod(num,16)
				end
			end
		end
	end
	return w1,w2,w3,_4b
end
function to_d_w_4b(num)
	if num < 0 then num=-num end
	num=floor(num)
	local dw,w,_4b=0,0,0
	if num >= 1 then
		dw=mod(num,2^32)
		if num >= 2^32 then
			num=floor(num/(2^32))
			w=mod(num,65536)
			if num >= 65536 then
				num=floor(num/65536)
				_4b=mod(num,16)
			end
		end
	end
	return dw,w,_4b
end
function from_b6_4b(b1,b2,b3,b4,b5,b6,_4b)
	return b1+b2*256+b3*65536+b4*2^24+b5*2^32+b6*2^40+_4b*2^48
end
function from_w3_4b(w1,w2,w3,_4b)
	return w1+w2*65536+w3*2^32+_4b*2^48
end
function from_d_w_4b(d,w,_4b)
	return d+w*2^32+_4b*2^48
end
